#include "List.h"

ListNode* ListInit()
{
	ListNode* plist = ListBuyNode(-1);
	return plist;
}

ListNode* ListBuyNode(SLDatatype x)
{
	ListNode* newnode = (ListNode*)malloc(sizeof(ListNode));
	if (newnode == NULL)
	{
		perror("newnode fail!");
		exit(1);
	}
	newnode->data = x;
	newnode->next = newnode;
	newnode->prev = newnode;
	return newnode;
}

void ListPushBack(ListNode* pphead,SLDatatype x)
{
	assert(pphead);
	ListNode* newnode = ListBuyNode(x);
	newnode->next = pphead;
	newnode->prev = pphead->prev;
	pphead->prev->next = newnode;
	pphead->prev = newnode;
}

void my_printf(ListNode* head)
{
	assert(head);
	ListNode* pcur = head->next;
	while (pcur!=head)
	{
		printf("%d->", pcur->data);
		pcur = pcur->next;
	}
	printf("\n");
}

void ListPushFront(ListNode*pphead, SLDatatype x)
{
	assert(pphead);
	ListNode* newnode = ListBuyNode(x);
	newnode->next = pphead->next;
	newnode->prev = pphead;
	pphead->next->prev = newnode;
	pphead->next = newnode;
}
